// 表情标识字符和索引映射关系对象，用户可以自定义
const emotionDataIndexs = {
  '[微笑]': 14,
  '[撇嘴]': 1,
  '[色]': 2,
  '[发呆]': 3,
  '[得意]': 4,
  '[流泪]': 5,
  '[害羞]': 6,
  // '[闭嘴]': 7,
  // '[睡]': 8,
  '[大哭]': 9,
  '[尴尬]': 10,
  '[发怒]': 11,
  '[调皮]': 12,
  '[龇牙]': 13,
  '[惊讶]': 0,
  '[难过]': 15,
  '[冷汗]': 17,
  '[抓狂]': 18,
  // '[吐]': 19,
  '[偷笑]': 20,
  '[可爱]': 21,
  '[白眼]': 22,
  '[傲慢]': 23,
  '[困]': 25,
  '[惊恐]': 26,
  '[流汗]': 27,
  '[憨笑]': 28,
  // '[大兵]': 29,
  '[奋斗]': 30,
  // '[咒骂]': 31,
  // '[疑问]': 32,
  // '[嘘]': 33,
  // '[晕]': 34,
  // '[酷]': 16,
  // '[饿]': 24,
  '[咖啡]': 35,
  '[鲜花]': 36,
  '[爱心]': 37,
  '[拥抱]': 38,
  '[强]': 39,
  '[握手]': 40,
  '[胜利]': 41,
  '[抱拳]': 42,
  '[拳头]': 43,
  '[OK]': 44
}

// 表情对象，用户可以自定
const emotions = {
  '0': ['[惊讶]', './emjor/15.png'],
  '1': ['[撇嘴]', './emjor/2.png'],
  '2': ['[色]', './emjor/3.png'],
  '3': ['[发呆]', './emjor/4.png'],
  '4': ['[得意]', './emjor/5.png'],
  '5': ['[流泪]', './emjor/6.png'],
  '6': ['[害羞]', './emjor/7.png'],
  // '7': ['[闭嘴]', './emjor/8.png'],
  // '8': ['[睡]', './emjor/9.png'],
  '9': ['[大哭]', './emjor/10.png'],
  '10': ['[尴尬]', './emjor/11.png'],
  '11': ['[发怒]', './emjor/12.png'],
  '12': ['[调皮]', './emjor/13.png'],
  '13': ['[龇牙]', './emjor/14.png'],
  '14': ['[微笑]', './emjor/1.png'],
  '15': ['[难过]', './emjor/16.png'],
  // '16': ['[酷]', './emjor/17.png'],
  '17': ['[冷汗]', './emjor/18.png'],
  '18': ['[抓狂]', './emjor/19.png'],
  // '19': ['[吐]', './emjor/20.png'],
  '20': ['[偷笑]', './emjor/21.png'],
  '21': ['[可爱]', './emjor/22.png'],
  '22': ['[白眼]', './emjor/23.png'],
  '23': ['[傲慢]', './emjor/24.png'],
  // '24': ['[饿]', './emjor/25.png'],
  '25': ['[困]', './emjor/26.png'],
  '26': ['[惊恐]', './emjor/27.png'],
  '27': ['[流汗]', './emjor/28.png'],
  '28': ['[憨笑]', './emjor/29.png'],
  // '29': ['[大兵]', './emjor/30.png'],
  '30': ['[奋斗]', './emjor/31.png'],
  // '31': ['[咒骂]', './emjor/32.png'],
  // '32': ['[疑问]', './emjor/33.png'],
  // '33': ['[嘘]', './emjor/34.png'],
  // '34': ['[晕]', './emjor/35.png'],
  '35': ['[咖啡]', './emjor/61.png'],
  '36': ['[鲜花]', './emjor/64.png'],
  '37': ['[爱心]', './emjor/67.png'],
  '38': ['[拥抱]', './emjor/79.png'],
  '39': ['[强]', './emjor/80.png'],
  '40': ['[握手]', './emjor/82.png'],
  '41': ['[胜利]', './emjor/83.png'],
  '42': ['[抱拳]', './emjor/84.png'],
  '43': ['[拳头]', './emjor/86.png'],
  '44': ['[OK]', './emjor/90.png'],
  '': []
}

/**
 * 解析消息文本，区分出表情
 * @param {*} message
 */
function parseTextMessage(message) {
  const emojiReg = /\[[^[\]]{1,3}\]/gm
  const emojiArr = message.match(emojiReg)
  const msgArr = []

  if (emojiArr && emojiArr.length > 0) {
    emojiArr.forEach((item, index) => {
      const textMsg = message.substring(0, message.indexOf(item))
      const nextMsgStartIndex = message.indexOf(item) + item.length

      const emotionIndex = emotionDataIndexs[item]
      const emotion = emotions[emotionIndex]

      if (textMsg) {
        msgArr.push({
          type: 'text',
          text: textMsg
        })
      }

      if (emotion) {
        msgArr.push({
          type: 'img',
          text: emotion[0],
          url: emotion[1]
        })
      } else {
        msgArr.push({
          type: 'text',
          text: item
        })
      }

      message = message.substring(nextMsgStartIndex)

      if (index === (emojiArr.length - 1) && message) {
        msgArr.push({
          type: 'text',
          text: message
        })
      }
    })
  } else {
    msgArr.push({
      type: 'text',
      text: message
    })
  }

  return msgArr
}

export { emotions, emotionDataIndexs, parseTextMessage }
